
package bd;
import classes.*;
import java.sql.*;
import java.util.*;
import javax.swing.JOptionPane;

public class CategoriaChamadoBD {

    public static boolean salvar(CategoriaChamado categoriaChamado,Usuario usuarioLogado)
    {
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_CATEGORIACHAMADO(NULL,?,?,NULL,?,?,?)}");
            //procedure.setInt(1, (Integer)null);
            procedure.setString(1,categoriaChamado.getDescr());
            procedure.setInt(2, usuarioLogado.getId());
            //procedure.setInt(4,(Integer)null);
            procedure.setDouble(3,categoriaChamado.getTempoMinimoAtend());
            procedure.setDouble(4,categoriaChamado.getTempoMaximoAtend());
            procedure.setString(5,"IN");
            procedure.execute();
            procedure.close();
            conexao.close();
            return true;

        }catch(Exception excecao)
        {
            System.out.println(excecao.getMessage());
            return false;
        }
    }

    public static boolean alterar(CategoriaChamado categoriaChamado,Usuario usuarioLogado)
    {
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_CATEGORIACHAMADO(?,?,NULL,?,?,?,?)}");
            procedure.setInt(1, categoriaChamado.getId());
            procedure.setString(2,categoriaChamado.getDescr());
            //procedure.setInt(3,(Integer)null);
            procedure.setInt(3, usuarioLogado.getId());
            procedure.setDouble(4,categoriaChamado.getTempoMinimoAtend());
            procedure.setDouble(5,categoriaChamado.getTempoMaximoAtend());
            procedure.setString(6,"AL");
            procedure.execute();
            procedure.close();
            conexao.close();
            return true;

        }catch(Exception excecao)
        {
            System.out.println(excecao.getMessage());
            return false;
        }
    }

    public static boolean deletar(int codigo)
    {
        try{
            Connection conexao = Conexao.abrir();
            CallableStatement procedure = conexao.prepareCall("{call AT_CATEGORIACHAMADO(?,NULL,NULL,NULL,NULL,NULL,?)}");
            procedure.setInt(1, codigo);

            //procedure.setString(2,null);
            //procedure.setInt(3, (Integer)null);
            //procedure.setInt(4, (Integer)null);
            //procedure.setDouble(5,(Double)null);
            //procedure.setDouble(6,(Double)null);
            procedure.setString(2,"");
            procedure.execute();
            procedure.close();
            conexao.close();
            return true;
        }catch(Exception excecao)
        {
            System.out.println(excecao.getMessage());
            return false;
        }
    }
    public static ArrayList<CategoriaChamado> pesquisar(String categoria){
       ArrayList<CategoriaChamado> vetCategoriaChamados = new ArrayList<CategoriaChamado>();
        try{
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_SELECIONACATEGORIACHAMADO where cac_descr='"+categoria+"'");
            while(resultado.next())
            {
                CategoriaChamado novaCategoriaChamado = new CategoriaChamado();
                novaCategoriaChamado.setId(resultado.getInt("CAC_ID"));
                novaCategoriaChamado.setDescr(resultado.getString("CAC_DESCR"));
                novaCategoriaChamado.setTempoMinimoAtend(resultado.getDouble("CAC_TMIN_ATEND"));
                novaCategoriaChamado.setTempoMaximoAtend(resultado.getDouble("CAC_TMAX_ATEND"));
                vetCategoriaChamados.add(novaCategoriaChamado);
            }
            conexao.close();
            return vetCategoriaChamados;
        }catch(Exception excecao)
        {
            return null;
        }
    }
    
    public static CategoriaChamado selecionar(int codigo)
    {
        CategoriaChamado retorno = null;
        try{
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_SELECIONACATEGORIACHAMADO where cac_id="+codigo+"");
            if(resultado.next())
            {
                CategoriaChamado novaCategoriaChamado = new CategoriaChamado();
                novaCategoriaChamado.setId(codigo);
                novaCategoriaChamado.setDescr(resultado.getString("cac_descr"));
                novaCategoriaChamado.setTempoMinimoAtend(resultado.getDouble("cac_tmin_atend"));
                novaCategoriaChamado.setTempoMaximoAtend(resultado.getDouble("cac_tmax_atend"));
                retorno=novaCategoriaChamado;
            }
            conexao.close();
            return retorno;
        }catch(Exception excecao)
        {
            return null;
        }
    }

    public static CategoriaChamado selecionar(String descr)
    {
        CategoriaChamado retorno = null;
        try{
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_SELECIONACATEGORIACHAMADO where cac_descr='"+descr+"'");
            if(resultado.next())
            {
                CategoriaChamado novaCategoriaChamado = new CategoriaChamado();
                novaCategoriaChamado.setId(resultado.getInt("cac_id"));
                novaCategoriaChamado.setDescr(resultado.getString("cac_descr"));
                novaCategoriaChamado.setTempoMinimoAtend(resultado.getDouble("cac_tmin_atend"));
                novaCategoriaChamado.setTempoMaximoAtend(resultado.getDouble("cac_tmax_atend"));
                retorno=novaCategoriaChamado;
            }
            conexao.close();
            return retorno;
        }catch(Exception excecao)
        {
            return null;
        }
    }

    public static ArrayList<CategoriaChamado> selecionar()
    {
        ArrayList<CategoriaChamado> vetCategoriaChamados = new ArrayList<CategoriaChamado>();
        try{
            Connection conexao = Conexao.abrir();
            Statement comandoSelect = conexao.createStatement();
            ResultSet resultado = comandoSelect.executeQuery("select * from VIEW_SELECIONACATEGORIACHAMADO");
            while(resultado.next())
            {
                CategoriaChamado novaCategoriaChamado = new CategoriaChamado();
                novaCategoriaChamado.setId(resultado.getInt("CAC_ID"));
                novaCategoriaChamado.setDescr(resultado.getString("CAC_DESCR"));
                novaCategoriaChamado.setTempoMinimoAtend(resultado.getDouble("CAC_TMIN_ATEND"));
                novaCategoriaChamado.setTempoMaximoAtend(resultado.getDouble("CAC_TMAX_ATEND"));
                vetCategoriaChamados.add(novaCategoriaChamado);
            }
            conexao.close();
            return vetCategoriaChamados;
        }catch(Exception excecao)
        {
            return null;
        }
    }
}
